/**
 * 
 */
package util.test;

import junit.framework.TestCase;
import util.DistancesEtDirections;
import visu.Champ;
import visu.Positionnable;

/**
 * Classe de tests pour la méthode
 * {@link util.DistancesEtDirections#directionDepuisUnPoint(visu.Positionnable, int, int, float)}
 * .
 * 
 * @author gnpt
 */
public class DistancesEtDirectionsTest2 extends TestCase {

	/**
	 * Juste pour les tests, une implémentation de Positionnable minimale.
	 * <p>
	 * On aurait pu se contenter de faire une surcharge à la construction, mais
	 * c'est plus propre ainsi.
	 * <p>
	 * Pis de toute façon ça va certainement partir ailleurs, on risque d'en
	 * avoir besoin.
	 * 
	 * @author gnpt
	 */
	private class PositionnableImpl implements Positionnable {
		int x, y;

		public PositionnableImpl() {
			this(0, 0);
		}

		public PositionnableImpl(int x, int y) {
			this.x = x;
			this.y = y;
		}

		@Override
		public Champ getChamp() {
			// On a pas besoin de champ pour ces tests
			return null;
		}

		@Override
		public int getX() {
			return this.x;
		}

		@Override
		public int getY() {
			return this.y;
		}

		@Override
		public void setX(int x) {
			this.x = x;
		}

		@Override
		public void setY(int y) {
			this.y = y;
		}
	}

	Positionnable bebete;

	/**
	 * @see junit.framework.TestCase#setUp()
	 */
	@Override
	protected void setUp() throws Exception {
		super.setUp();
		this.bebete = new PositionnableImpl();
	}

	/**
	 * Premier test : Test des deux axes, la bêbète étant le centre du plan (et
	 * du monde, le champ n'existe même pas...).
	 */
	public void testDirectionDepuisUnPoint() {
		float dir;
		float pi = (float) Math.PI;

		// Deux positionnables sur le même point
		dir = DistancesEtDirections.directionDepuisUnPoint(this.bebete, 0, 0,
				pi / 5);
		assertTrue(Float.isNaN(dir));
	}

}
